<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <!--页面的容器内不用写任何标签-->
    </div>

    <script>
        Vue.config.productionTip = false

        //student组件 是school的子组件
        let stu = Vue.extend({ 
            template: `
                <div>
                    <h2>学生名称：{{name}}</h2>
                    <h2>学生地址：{{age}}</h2>
                </div>
            `,
            data() {
              return {
                name: '张三',
                age: 18,
              }
            }
        })

        //school组件
        let sch = Vue.extend({ 
            name: 'school',
            template: `
                <div>
                    <h2>学校名称：{{name}}</h2>
                    <h2>学校地址：{{address}}</h2>
                    <hr>
                    <student></student> 
                </div>
            `, //因为student组件注册到school组件中，所以要写到school组件的模板内
            data() {
              return {
                name: 'shanggg',
                address: 'bj',
              }
            },
            components: {
                student: stu //把student组件注册到school组件
            }
        })

        //hello组件
        let hello = Vue.extend({ 
            template: `
                <h1>{{msg}}</h1>
            `,
            data() {
              return {
                msg: '欢迎来到sgg',
              }
            },
            components: {
               
            }
        })

        //定义app组件
        let app = Vue.extend({ 
            template: `
                <div>
                    <hello></hello>
                    <school></school>
                </div>
            `,
            components: {
               school: sch, //把school组件注册到app
               hello, //hello组件和school平级
            }
        })
        
        let vm = new Vue({
            template:'<app></app>',//vm的模板只需要写父组件app标签
            el: "#root",
            components: {
                app
            }
        })

        /*
            实际开发中，会创建一个最大的父组件--app组件
            vm只会直接管理app组件，其他的组件都是app组件的直接或间接子组件
        */
    </script>
</body>
</html>